[-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1: Type: text/plain, Size: 81599 bytes --] https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=212135acf1be102c98760d7dbeb7cc92ef998a71 commit 212135acf1be102c98760d7dbeb7cc92ef998a71 Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Thu Jun 16 21:03:18 2022 +0100 Update README https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=7d12fb07114647a57bb0c37aab99a8c4ff900b8d commit 7d12fb07114647a57bb0c37aab99a8c4ff900b8d Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Fri Jun 17 10:23:10 2022 +0100 Also localize options helptext framing text https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e11d78063bfa1347a0c66af6cb6f9bf93c1f6ce5 commit e11d78063bfa1347a0c66af6cb6f9bf93c1f6ce5 Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Thu Jun 16 21:03:01 2022 +0100 Enable maintainer mode for libgetopt++ AM_MAINTAINER_MODE without an argument means --disable-maintainer-mode by default, which isn't what's wanted. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=0842d2e3a3c280fcce1ce780c77ab7c766dcae0b commit 0842d2e3a3c280fcce1ce780c77ab7c766dcae0b Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Thu Jun 16 20:14:20 2022 +0100 Add a GitHub workflow for building on Cygwin https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=3f7be6270618acdf9dddbcd6ffd6ea9e03171cf9 commit 3f7be6270618acdf9dddbcd6ffd6ea9e03171cf9 Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Thu Jun 16 17:03:03 2022 +0100 Try to ensure console output is correctly encoded Previously, all log messages were ASCII, so this wasn't a concern. Now that log may contain UTF-8, we need to ensure that appears correctly. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=6ac90bf08213d9b7a20fc9f086fb89601a7a2019 commit 6ac90bf08213d9b7a20fc9f086fb89601a7a2019 Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Thu Jun 16 22:05:05 2022 +0100 Add French translations of option help-text Also make some minor adjustments to help-texts for consistency: * --no-warn-deprecated-windows should start "Don't" * --categories doesn't need to say "entire" * --download and --local-install no longer say "seulement" https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=20f237b4e884af7992c5b5e270301684f64d0395 commit 20f237b4e884af7992c5b5e270301684f64d0395 Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Thu Jun 16 13:57:38 2022 +0100 Add command-line option help-text localization Change libgetopt++ Option class to store an unsigned int message catalog identifer for the help-text, rather than a std::string of the help-text. ParameterUsage (the function which produces the help output) now takes a lookup function as a parameter, which translates that message identifer to a localized std::string. Move existing help-text to a stringtable resource, and then wire up ParameterUsage to use LoadString. Update libgetop++ tests appropriately. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=b0bd16950669290e488dc382051f7f28f2278eef commit b0bd16950669290e488dc382051f7f28f2278eef Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Mon Jun 13 14:54:50 2022 +0100 Fix '-t -P package-with-only-a-test-version' Fix how 'install any version' operates in that case. Also make '-t' have an effect when used with '-P' but without '-g'. Future work: The language around '-t' perhaps needs refining, since it's absence just lowers the priority of test packages, not prohibiting their use (so in this particular case, package-with-only-a-test-version will be installed, even without '-t') https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=9ea9db8ff367b21efe0ed9a7ada0e1e697751518 commit 9ea9db8ff367b21efe0ed9a7ada0e1e697751518 Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Tue Jun 14 22:03:48 2022 +0100 Improve consistency of ending sentences with a full-stop Improve the consistency between translations of ending sentences with a full-stop. Always end the sentence under the page title with a full-stop. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=35152c83ad51db6ada7f072bc57318d30a44e459 commit 35152c83ad51db6ada7f072bc57318d30a44e459 Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Wed Jun 15 14:49:38 2022 +0100 Tidy up spacing in french translation Consistently use a space before ':' (apparently "space before and after full-height punctuation" is a standard typographical rule for French). Remove unneeded trailing whitespace. Diff: --- .github/workflows/cygwin.yml | 53 +++++ AntiVirus.cc | 2 +- LogFile.cc | 25 ++- README | 17 +- String++.cc | 7 +- String++.h | 3 +- choose.cc | 13 +- crypto.cc | 17 +- desktop.cc | 6 +- ini.cc | 4 +- install.cc | 4 +- io_stream_cygfile.cc | 4 +- libgetopt++/configure.ac | 1 - libgetopt++/include/getopt++/BoolOption.h | 6 +- libgetopt++/include/getopt++/DefaultFormatter.h | 13 +- libgetopt++/include/getopt++/Option.h | 2 +- libgetopt++/include/getopt++/OptionSet.h | 4 +- libgetopt++/include/getopt++/StringArrayOption.h | 8 +- libgetopt++/include/getopt++/StringChoiceOption.h | 2 +- libgetopt++/include/getopt++/StringOption.h | 8 +- libgetopt++/src/BoolOption.cc | 4 +- libgetopt++/src/OptionSet.cc | 4 +- libgetopt++/src/StringArrayOption.cc | 4 +- libgetopt++/src/StringChoiceOption.cc | 2 +- libgetopt++/src/StringOption.cc | 4 +- libgetopt++/tests/BoolOptionTest.cc | 6 +- libgetopt++/tests/OptionSet.cc | 10 +- libgetopt++/tests/optioniterator.cc | 2 +- libgetopt++/tests/testoption.cc | 13 +- libsolv.cc | 13 +- localdir.cc | 2 +- main.cc | 38 ++-- net.cc | 2 +- nio-ie5.cc | 2 +- package_db.cc | 2 +- package_meta.cc | 8 +- po/fr/res.po | 235 ++++++++++++++++++++-- prereq.cc | 2 +- res.pot | 209 ++++++++++++++++++- res/en/res.rc | 66 +++++- res/fr/res.rc | 74 ++++++- resource.h | 49 +++++ root.cc | 2 +- site.cc | 5 +- source.cc | 4 +- win32.cc | 7 + win32.h | 1 + 47 files changed, 820 insertions(+), 149 deletions(-) diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml new file mode 100644 index 00000000..b406c5eb --- /dev/null +++ b/.github/workflows/cygwin.yml @@ -0,0 +1,53 @@ +name: Cygwin + +on: push + +jobs: + cygwin-build: + name: Cygwin + runs-on: windows-latest + + strategy: + fail-fast: false + matrix: + include: + - pkgarch: i686 + - pkgarch: x86_64 + + steps: + - run: git config --global core.autocrlf input + + # fetch all history for all tags for 'git describe' + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Install Cygwin + uses: cygwin/cygwin-install-action@master + with: + packages: >- + autoconf, + automake, + bison, + flex, + libtool, + make, + mingw64-${{ matrix.pkgarch }}-bzip2, + mingw64-${{ matrix.pkgarch }}-gcc-g++, + mingw64-${{ matrix.pkgarch }}-headers, + mingw64-${{ matrix.pkgarch }}-libgcrypt, + mingw64-${{ matrix.pkgarch }}-libsolv, + mingw64-${{ matrix.pkgarch }}-xz, + mingw64-${{ matrix.pkgarch }}-zlib, + mingw64-${{ matrix.pkgarch }}-zstd, + upx + + - name: Build + run: packaging-scripts/conf.sh upx ${{ matrix.pkgarch }} + shell: bash --noprofile --norc -eo pipefail '{0}' + + - name: Test + run: >- + export PATH=/usr/${{ matrix.pkgarch }}-w64-mingw32/sys-root/mingw/bin/:${PATH} && + make -C ${{ matrix.pkgarch }} check + shell: bash --noprofile --norc -eo pipefail '{0}' diff --git a/AntiVirus.cc b/AntiVirus.cc index 051a434d..cc416cc7 100644 --- a/AntiVirus.cc +++ b/AntiVirus.cc @@ -31,7 +31,7 @@ /* XXX: Split this into observer and model classes */ /* Default is to leave well enough alone */ -static BoolOption DisableVirusOption (false, 'A', "disable-buggy-antivirus", "Disable known or suspected buggy anti virus software packages during execution."); +static BoolOption DisableVirusOption (false, 'A', "disable-buggy-antivirus", IDS_HELPTEXT_DISABLE_ANTIVIRUS); static bool KnownAVIsPresent = false; static bool AVRunning = true; diff --git a/LogFile.cc b/LogFile.cc index 0a83159f..ab2e3ec9 100644 --- a/LogFile.cc +++ b/LogFile.cc @@ -33,8 +33,7 @@ #include "String++.h" #include "getopt++/BoolOption.h" -static BoolOption VerboseOutput (false, 'v', "verbose", - "Verbose output"); +static BoolOption VerboseOutput (false, 'v', "verbose", IDS_HELPTEXT_VERBOSE); /* private helper class */ class filedef @@ -215,7 +214,27 @@ LogFile::endEntry() /* also write to stdout */ if ((currEnt->level >= LOG_PLAIN) || VerboseOutput) - std::cout << buf << std::endl; + { + /* + The log message is UTF-8 encoded. Re-encode this in the console output + codepage (so it can be correctly decoded by a Windows terminal). + Unfortunately there's no API for direct multibyte re-encoding, so we + must do it in two steps UTF-8 -> UTF-16 -> CP_COCP. + + If the console output codepage is UTF-8, we already have the log message + in the correct encoding, so we can avoid doing all that work. + + If the output is not a console, GetConsoleOutputCP() returns 0. + Possibly it's a Cygwin pty? + */ + std::string cpbuf = buf; + + unsigned int ocp = GetConsoleOutputCP(); + if ((ocp != 0 ) && (ocp != 65001)) + cpbuf = wstring_to_string(string_to_wstring(buf), ocp); + + std::cout << cpbuf << std::endl; + } if (!currEnt) { diff --git a/README b/README index b8f3f7cf..9bcf7b35 100644 --- a/README +++ b/README @@ -99,6 +99,19 @@ Follow the general directions given in the Cygwin contributions document: https://cygwin.com/contrib.html The appropriate mailing list for this project is cygwin-apps -(rather than cygwin-patches). Thus, the appropriate final command would be: +(rather than cygwin-patches). Thus an appropriate configuration is: - $ git send-email --to="cygwin-apps@cygwin.com" + $ git config --local format.subjectprefix "PATCH setup" + $ git config --local sendemail.to "cygwin-apps@cygwin.com" + +Before sending patches with: + + $ git format-patch [--cover-letter] + $ git send-email *.patch + + +TRANSLATIONS +------------ + +Translations of the gettext template res.pot can be made using PO file tools, or +online at https://hosted.weblate.org/projects/cygwin-setup/cygwin-setup/ diff --git a/String++.cc b/String++.cc index a5649759..9506b9e3 100644 --- a/String++.cc +++ b/String++.cc @@ -11,7 +11,6 @@ */ #include "String++.h" -#include "win32.h" #include <string.h> #include <sstream> #include <algorithm> @@ -116,15 +115,15 @@ std::wstring string_to_wstring(const std::string &s) } // convert a UTF-16 wstring to a UTF-8 string -std::string wstring_to_string(const std::wstring &w) +std::string wstring_to_string(const std::wstring &w, unsigned int encoding) { - int n = WideCharToMultiByte(CP_UTF8, 0, w.c_str(), -1, NULL, 0, NULL, NULL); + int n = WideCharToMultiByte(encoding, 0, w.c_str(), -1, NULL, 0, NULL, NULL); if (n <= 0) return "conversion failed"; char *buf = new char[n+1]; - WideCharToMultiByte(CP_UTF8, 0, w.c_str(), -1, buf, n, NULL, NULL); + WideCharToMultiByte(encoding, 0, w.c_str(), -1, buf, n, NULL, NULL); std::string s(buf); delete[] buf; diff --git a/String++.h b/String++.h index af32611c..caaf75f8 100644 --- a/String++.h +++ b/String++.h @@ -14,6 +14,7 @@ #define SETUP_STRING___H #include <string> +#include "win32.h" char *new_cstr_char_array (const std::string& s); @@ -43,7 +44,7 @@ inline std::string operator+ (const char *a, const std::string& b) { return std::string(a) + b; } std::wstring string_to_wstring(const std::string &s); -std::string wstring_to_string(const std::wstring &w); +std::string wstring_to_string(const std::wstring &w, unsigned int encoding = CP_UTF8); // produce a std::string using formatting like sprintf std::wstring vformat(const std::wstring &fmt, va_list ap); diff --git a/choose.cc b/choose.cc index 1b18bbd0..8deab874 100644 --- a/choose.cc +++ b/choose.cc @@ -59,11 +59,11 @@ #include "Exception.h" #include "getopt++/BoolOption.h" -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"); -static BoolOption AllowTestOption (false, 't', "allow-test-packages", "Consider package versions marked test"); +static BoolOption UpgradeAlsoOption (false, 'g', "upgrade-also", IDS_HELPTEXT_UPGRADE_ALSO); +static BoolOption CleanOrphansOption (false, 'o', "delete-orphans", IDS_HELPTEXT_DELETE_ORPHANS); +static BoolOption ForceCurrentOption (false, 'f', "force-current", IDS_HELPTEXT_FORCE_CURRENT); +static BoolOption PruneInstallOption (false, 'Y', "prune-install", IDS_HELPTEXT_PRUNE_INSTALL); +static BoolOption AllowTestOption (false, 't', "allow-test-packages", IDS_HELPTEXT_ALLOW_TEST); extern ThreeBarProgressPage Progress; @@ -166,7 +166,6 @@ ChooserPage::initialUpdateState() if (ForceCurrentOption) { update_mode_id = IDC_CHOOSE_SYNC; - changeTrust(update_mode_id, AllowTestOption, true); } else if (hasManualSelections && !UpgradeAlsoOption) { @@ -177,8 +176,8 @@ ChooserPage::initialUpdateState() else { update_mode_id = IDC_CHOOSE_BEST; - changeTrust (update_mode_id, AllowTestOption, true); } + changeTrust(update_mode_id, AllowTestOption, true); static int ta[] = { IDC_CHOOSE_KEEP, IDC_CHOOSE_BEST, IDC_CHOOSE_SYNC, 0 }; rbset (GetHWND (), ta, update_mode_id); diff --git a/crypto.cc b/crypto.cc index 88ced387..a837f8da 100644 --- a/crypto.cc +++ b/crypto.cc @@ -42,18 +42,11 @@ #endif /* Command-line options for specifying and controlling extra keys. */ -static StringArrayOption ExtraKeyOption ('K', "pubkey", - "URL or absolute path of extra public key file (RFC4880 format)"); - -static StringArrayOption SexprExtraKeyOption ('S', "sexpr-pubkey", - "Extra DSA public key in s-expr format"); - -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"); -static BoolOption EnableOldKeysOption (false, '\0', "old-keys", - "Enable old cygwin.com keys", +static StringArrayOption ExtraKeyOption ('K', "pubkey", IDS_HELPTEXT_PUBKEY); +static StringArrayOption SexprExtraKeyOption ('S', "sexpr-pubkey", IDS_HELPTEXT_SEXPR_PUBKEY); +static BoolOption UntrustedKeysOption (false, 'u', "untrusted-keys", IDS_HELPTEXT_UNTRUSTED_KEYS); +static BoolOption KeepUntrustedKeysOption (false, 'U', "keep-untrusted-keys", IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS); +static BoolOption EnableOldKeysOption (false, '\0', "old-keys", IDS_HELPTEXT_OLD_KEYS, BoolOption::BoolOptionType::pairedAble); /* Embedded public half of Cygwin signing key. */ diff --git a/desktop.cc b/desktop.cc index aa1f9019..4b76568c 100644 --- a/desktop.cc +++ b/desktop.cc @@ -40,9 +40,9 @@ #include "getopt++/BoolOption.h" #include "LogFile.h" -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"); +static BoolOption NoShortcutsOption (false, 'n', "no-shortcuts", IDS_HELPTEXT_NO_SHORTCUTS); +static BoolOption NoStartMenuOption (false, 'N', "no-startmenu", IDS_HELPTEXT_NO_STARTMENU); +static BoolOption NoDesktopOption (false, 'd', "no-desktop", IDS_HELPTEXT_NO_DESKTOP); /* Lines starting with '@' are conditionals - include 'N' for NT, '5' for Win95, '8' for Win98, '*' for all, like this: diff --git a/ini.cc b/ini.cc index 1fd39ba1..3ef13118 100644 --- a/ini.cc +++ b/ini.cc @@ -61,8 +61,8 @@ std::string ini_setup_version; IniList setup_ext_list (setup_exts, setup_exts + (sizeof(setup_exts) / sizeof(*setup_exts))); -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"); +static BoolOption NoVerifyOption (false, 'X', "no-verify", IDS_HELPTEXT_NO_VERIFY); +static BoolOption NoVersionCheckOption (false, '\0', "no-version-check", IDS_HELPTEXT_NO_VERSION_CHECK); class GuiParseFeedback : public IniParseFeedback { diff --git a/install.cc b/install.cc index beb15c74..e58ef4b3 100644 --- a/install.cc +++ b/install.cc @@ -66,9 +66,7 @@ static long long int total_bytes = 0; static long long int total_bytes_sofar = 0; static int package_bytes = 0; -static BoolOption NoReplaceOnReboot (false, 'r', "no-replaceonreboot", - "Disable replacing in-use files on next " - "reboot."); +static BoolOption NoReplaceOnReboot (false, 'r', "no-replaceonreboot", IDS_HELPTEXT_NO_REPLACEONREBOOT); struct std_dirs_t { const char *name; diff --git a/io_stream_cygfile.cc b/io_stream_cygfile.cc index 52ef7355..7fa661c6 100644 --- a/io_stream_cygfile.cc +++ b/io_stream_cygfile.cc @@ -29,6 +29,7 @@ #include "io_stream_cygfile.h" #include "IOStreamProvider.h" #include "LogSingleton.h" +#include "resource.h" static StringChoiceOption::StringChoices algs({ {"xpress4k", FILE_PROVIDER_COMPRESSION_XPRESS4K}, @@ -38,8 +39,7 @@ static StringChoiceOption::StringChoices algs({ }); static StringChoiceOption CompactOsOption(algs, - '\0', "compact-os", - "Compress installed files with Compact OS (xpress4k, xpress8k, xpress16k, lzx)", + '\0', "compact-os", IDS_HELPTEXT_COMPACTOS, true, -1, FILE_PROVIDER_COMPRESSION_LZX); /* completely private iostream registration class */ diff --git a/libgetopt++/configure.ac b/libgetopt++/configure.ac index 45070264..b79691dc 100644 --- a/libgetopt++/configure.ac +++ b/libgetopt++/configure.ac @@ -10,7 +10,6 @@ AC_CONFIG_AUX_DIR(cfgaux) AM_INIT_AUTOMAKE AC_CONFIG_HEADERS(include/autoconf.h) AC_PREFIX_DEFAULT(/usr/local) -AM_MAINTAINER_MODE m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES(yes)]) AC_LANG([C++]) diff --git a/libgetopt++/include/getopt++/BoolOption.h b/libgetopt++/include/getopt++/BoolOption.h index 8b20e1cc..7cfb8bf4 100644 --- a/libgetopt++/include/getopt++/BoolOption.h +++ b/libgetopt++/include/getopt++/BoolOption.h @@ -31,14 +31,14 @@ public: }; BoolOption(bool const defaultvalue, char shortopt, char const *longopt = 0, - std::string const &shorthelp = std::string(), + unsigned int shorthelp = 0, BoolOptionType type = BoolOptionType::simple, OptionSet &owner=GetOption::GetInstance()); virtual ~ BoolOption (); virtual std::string const shortOption () const; virtual std::string const longOption () const; virtual std::vector<std::string> const & longOptionPrefixes () const; - virtual std::string const shortHelp () const; + virtual unsigned int shortHelp () const; virtual Result Process (char const *, int); virtual Argument argument () const; operator bool () const; @@ -48,7 +48,7 @@ private: bool _ovalue; char _shortopt; char const *_longopt; - std::string _shorthelp; + unsigned int _shorthelp; BoolOptionType _type; }; diff --git a/libgetopt++/include/getopt++/DefaultFormatter.h b/libgetopt++/include/getopt++/DefaultFormatter.h index 8b421a67..ee2397f5 100644 --- a/libgetopt++/include/getopt++/DefaultFormatter.h +++ b/libgetopt++/include/getopt++/DefaultFormatter.h @@ -31,18 +31,20 @@ class DefaultFormatter { const unsigned int h_len; const std::string s_lead; const std::string l_lead; + std::ostream &theStream; + StrLookup strLookup; public: - DefaultFormatter (std::ostream &aStream) + DefaultFormatter (std::ostream &aStream, StrLookup aLookup) : o_len(35), h_len(45), s_lead(" -"), l_lead(" --"), - theStream(aStream) + theStream(aStream), strLookup(aLookup) {} - DefaultFormatter (std::ostream &aStream, + DefaultFormatter (std::ostream &aStream, StrLookup aLookup, unsigned int o_len, unsigned int h_len, std::string s_lead, std::string l_lead) : o_len(o_len), h_len(h_len), s_lead(s_lead), l_lead(l_lead), - theStream(aStream) + theStream(aStream), strLookup(aLookup) {} void operator () (Option *anOption) { if (anOption->shortOption ()[0] == '\0') @@ -57,7 +59,7 @@ class DefaultFormatter { << std::string (o_len - s_lead.size () - 1 - l_lead.size () - longOption.size (), ' '); - std::string helpmsg = anOption->shortHelp(); + std::string helpmsg = strLookup(anOption->shortHelp()); while (helpmsg.size() > h_len) { // TODO: consider using a line breaking strategy here. @@ -68,7 +70,6 @@ class DefaultFormatter { } theStream << helpmsg << std::endl; } - std::ostream &theStream; }; #endif // _GETOPT___DEFAULTFORMATTER_H_ diff --git a/libgetopt++/include/getopt++/Option.h b/libgetopt++/include/getopt++/Option.h index b3b140ff..ae301813 100644 --- a/libgetopt++/include/getopt++/Option.h +++ b/libgetopt++/include/getopt++/Option.h @@ -34,7 +34,7 @@ public: virtual std::string const shortOption () const = 0; virtual std::string const longOption () const = 0; virtual std::vector<std::string> const & longOptionPrefixes () const; - virtual std::string const shortHelp () const = 0; + virtual unsigned int shortHelp () const = 0; enum Result { Failed, Ok, diff --git a/libgetopt++/include/getopt++/OptionSet.h b/libgetopt++/include/getopt++/OptionSet.h index dbd8046b..b0c218cc 100644 --- a/libgetopt++/include/getopt++/OptionSet.h +++ b/libgetopt++/include/getopt++/OptionSet.h @@ -21,6 +21,8 @@ #include <vector> #include "getopt++/Option.h" +typedef const std::string (*StrLookup)(unsigned int); + class OptionSet { public: @@ -30,7 +32,7 @@ public: virtual bool Process (int argc, char **argv, Option *nonOptionHandler); virtual bool Process (std::vector<std::string> const &parms, Option *nonOptionHandler); virtual bool process (Option *nonOptionHandler); - virtual void ParameterUsage (std::ostream &); + virtual void ParameterUsage (std::ostream &, StrLookup strLookup); virtual std::vector<Option *> const &optionsInSet() const; virtual std::vector<std::string> const &nonOptions() const; virtual std::vector<std::string> const &remainingArgv() const; diff --git a/libgetopt++/include/getopt++/StringArrayOption.h b/libgetopt++/include/getopt++/StringArrayOption.h index b589d283..0072bfde 100644 --- a/libgetopt++/include/getopt++/StringArrayOption.h +++ b/libgetopt++/include/getopt++/StringArrayOption.h @@ -23,12 +23,12 @@ class StringArrayOption : public Option { public: StringArrayOption(char shortopt, char const *longopt = 0, - std::string const &shorthelp = std::string(), - OptionSet &owner=GetOption::GetInstance()); + unsigned int shorthelp = 0, + OptionSet &owner=GetOption::GetInstance()); virtual ~ StringArrayOption (); virtual std::string const shortOption () const; virtual std::string const longOption () const; - virtual std::string const shortHelp () const; + virtual unsigned int shortHelp () const; virtual Result Process (char const *, int); virtual Argument argument () const; operator std::vector<std::string> () const; @@ -38,7 +38,7 @@ private: std::vector<std::string> _value; char _shortopt; char const *_longopt; - std::string _shorthelp; + unsigned int _shorthelp; }; #endif // _STRINGARRAYOPTION_H_ diff --git a/libgetopt++/include/getopt++/StringChoiceOption.h b/libgetopt++/include/getopt++/StringChoiceOption.h index 88007128..2cf70f2a 100644 --- a/libgetopt++/include/getopt++/StringChoiceOption.h +++ b/libgetopt++/include/getopt++/StringChoiceOption.h @@ -23,7 +23,7 @@ public: StringChoiceOption(StringChoices choices, char shortopt, char const *longopt = 0, - std::string const &shorthelp = std::string(), + unsigned int shorthelp = 0, bool const optional = true, // option without choice string is permitted int const defaultvalue = -1, // value when option is absent int const impliedvalue = -1); // value when option is present without choice string diff --git a/libgetopt++/include/getopt++/StringOption.h b/libgetopt++/include/getopt++/StringOption.h index 37e723a6..10bb4b89 100644 --- a/libgetopt++/include/getopt++/StringOption.h +++ b/libgetopt++/include/getopt++/StringOption.h @@ -24,12 +24,12 @@ class StringOption : public Option { public: StringOption(std::string const defaultvalue, char shortopt, char const *longopt = 0, - std::string const &shorthelp = std::string(), bool const optional = true, - OptionSet &owner=GetOption::GetInstance()); + unsigned int shorthelp = 0, bool const optional = true, + OptionSet &owner=GetOption::GetInstance()); virtual ~ StringOption (); virtual std::string const shortOption () const; virtual std::string const longOption () const; - virtual std::string const shortHelp () const; + virtual unsigned int shortHelp () const; virtual Result Process (char const *, int); virtual Argument argument () const; operator const std::string& () const; @@ -39,7 +39,7 @@ private: std::string _value; char _shortopt; char const *_longopt; - std::string _shorthelp; + unsigned int _shorthelp; }; #endif // _STRINGOPTION_H_ diff --git a/libgetopt++/src/BoolOption.cc b/libgetopt++/src/BoolOption.cc index 37d9a229..fa9686b7 100644 --- a/libgetopt++/src/BoolOption.cc +++ b/libgetopt++/src/BoolOption.cc @@ -16,7 +16,7 @@ #include <getopt++/BoolOption.h> BoolOption::BoolOption(bool const defaultvalue, char shortopt, - char const *longopt, std::string const &shorthelp, + char const *longopt, unsigned int shorthelp, BoolOptionType type, OptionSet &owner) : _value (defaultvalue), _ovalue (defaultvalue), _shortopt(shortopt), _longopt (longopt), _shorthelp (shorthelp), _type(type) @@ -56,7 +56,7 @@ BoolOption::longOptionPrefixes () const } } -std::string const +unsigned int BoolOption::shortHelp () const { return _shorthelp; diff --git a/libgetopt++/src/OptionSet.cc b/libgetopt++/src/OptionSet.cc index 5a8ddee4..004c2cba 100644 --- a/libgetopt++/src/OptionSet.cc +++ b/libgetopt++/src/OptionSet.cc @@ -334,10 +334,10 @@ comp_long_option(const Option *a, const Option *b) } void -OptionSet::ParameterUsage (std::ostream &aStream) +OptionSet::ParameterUsage (std::ostream &aStream, StrLookup strLookup) { std::sort(options.begin(), options.end(), comp_long_option); - for_each (options.begin(), options.end(), DefaultFormatter (aStream)); + for_each (options.begin(), options.end(), DefaultFormatter (aStream, strLookup)); } std::vector<Option *> const & diff --git a/libgetopt++/src/StringArrayOption.cc b/libgetopt++/src/StringArrayOption.cc index fe6f6131..1a2e69e2 100644 --- a/libgetopt++/src/StringArrayOption.cc +++ b/libgetopt++/src/StringArrayOption.cc @@ -15,7 +15,7 @@ #include <getopt++/StringArrayOption.h> StringArrayOption::StringArrayOption(char shortopt, - char const *longopt, std::string const &shorthelp, + char const *longopt, unsigned int shorthelp, OptionSet &owner) : _optional(Required), _shortopt(shortopt), _longopt (longopt), _shorthelp (shorthelp) @@ -37,7 +37,7 @@ StringArrayOption::longOption () const return _longopt; } -std::string const +unsigned int StringArrayOption::shortHelp () const { return _shorthelp; diff --git a/libgetopt++/src/StringChoiceOption.cc b/libgetopt++/src/StringChoiceOption.cc index 185d56af..be4d54df 100644 --- a/libgetopt++/src/StringChoiceOption.cc +++ b/libgetopt++/src/StringChoiceOption.cc @@ -14,7 +14,7 @@ StringChoiceOption::StringChoiceOption (StringChoices _choices, char shortopt, char const *longopt, - std::string const &shorthelp, + unsigned int shorthelp, bool const optional, int const defaultvalue, int const impliedvalue) : diff --git a/libgetopt++/src/StringOption.cc b/libgetopt++/src/StringOption.cc index e3c4af64..0817c9c2 100644 --- a/libgetopt++/src/StringOption.cc +++ b/libgetopt++/src/StringOption.cc @@ -16,7 +16,7 @@ #include <getopt++/StringOption.h> StringOption::StringOption(std::string const defaultvalue, char shortopt, - char const *longopt, std::string const &shorthelp, + char const *longopt, unsigned int shorthelp, bool const optional, OptionSet &owner) : _value (defaultvalue) , _shortopt(shortopt), _longopt (longopt), _shorthelp (shorthelp) @@ -42,7 +42,7 @@ StringOption::longOption () const return _longopt; } -std::string const +unsigned int StringOption::shortHelp () const { return _shorthelp; diff --git a/libgetopt++/tests/BoolOptionTest.cc b/libgetopt++/tests/BoolOptionTest.cc index 7fdd2591..c83b3d3e 100644 --- a/libgetopt++/tests/BoolOptionTest.cc +++ b/libgetopt++/tests/BoolOptionTest.cc @@ -23,9 +23,9 @@ int main (int anargc, char **anargv) { - BoolOption helpoption (false, 'h', "help", "Tests the use of help output."); - BoolOption helpoption2 (false, 'o', "help2", "Tests the use of help output."); - BoolOption ableoption (false, '\0', "foo", "Tests the use of paired option.", BoolOption::BoolOptionType::pairedAble); + BoolOption helpoption (false, 'h', "help"); + BoolOption helpoption2 (false, 'o', "help2"); + BoolOption ableoption (false, '\0', "foo", 0, BoolOption::BoolOptionType::pairedAble); int argc=2; char *argv[4]; diff --git a/libgetopt++/tests/OptionSet.cc b/libgetopt++/tests/OptionSet.cc index 4eac880c..fa270e79 100644 --- a/libgetopt++/tests/OptionSet.cc +++ b/libgetopt++/tests/OptionSet.cc @@ -32,9 +32,9 @@ class StringCollector : public Option { return ""; } - virtual const std::string shortHelp() const + virtual unsigned int shortHelp() const { - return ""; + return 0; } virtual Option::Result Process(const char * value, int index); virtual Option::Argument argument() const @@ -71,7 +71,7 @@ main (int anargc, char **anargv) std::cout << "Processed ok with no options and no default." << std::endl; return 1; } - BoolOption testoption (false, 't', "testoption", "dummy for testing OptionSet behaviour"); + BoolOption testoption (false, 't', "testoption"); if (!GetOption::GetInstance().Process(argc, argv, NULL)) { std::cout << "Failed to processed with options and only nonoption arguments." << std::endl; return 1; @@ -114,7 +114,7 @@ main (int anargc, char **anargv) std::cout << "Processed with a value to a valueless=argument." << std::endl; return 1; } - StringOption testrequiredstring ("default", 's', "string", "A string with required parameter", false); + StringOption testrequiredstring ("default", 's', "string", 0, false); free (argv[argc - 1]); argv[argc - 1] = strdup ("-st"); if (GetOption::GetInstance().Process(argc, argv, NULL)) { @@ -152,7 +152,7 @@ main (int anargc, char **anargv) return 1; } - StringOption testoptionalstring ("default", 'o', "optional", "A string with optional parameter", true); + StringOption testoptionalstring ("default", 'o', "optional", 0, true); argv[argc] = strdup ("-ot"); ++argc; if (!GetOption::GetInstance().Process(argc, argv, NULL)) { diff --git a/libgetopt++/tests/optioniterator.cc b/libgetopt++/tests/optioniterator.cc index 6d00d7ad..c7b6cb46 100644 --- a/libgetopt++/tests/optioniterator.cc +++ b/libgetopt++/tests/optioniterator.cc @@ -18,7 +18,7 @@ #include <iostream> -static BoolOption testoption (false, 't', "testoption", "Tests the use of boolean options"); +static BoolOption testoption (false, 't', "testoption"); int main (int argc, char **argv) { diff --git a/libgetopt++/tests/testoption.cc b/libgetopt++/tests/testoption.cc index 1a18a2ed..7e54d42e 100644 --- a/libgetopt++/tests/testoption.cc +++ b/libgetopt++/tests/testoption.cc @@ -19,8 +19,15 @@ #include <iostream> -static BoolOption testoption (false, 't', "testoption", "Tests the use of boolean options"); -static BoolOption helpoption (false, 'h', "help", "Tests the use of help output."); +static BoolOption testoption (false, 't', "testoption"); +static BoolOption helpoption (false, 'h', "help"); + +static +const std::string lookup(unsigned int) +{ + return ""; +} + int main (int argc, char **argv) { @@ -31,7 +38,7 @@ main (int argc, char **argv) } if (helpoption) { - GetOption::GetInstance().ParameterUsage(std::cout); + GetOption::GetInstance().ParameterUsage(std::cout, lookup); } if (testoption) { diff --git a/libsolv.cc b/libsolv.cc index a2f3f4c0..5b10c5a7 100644 --- a/libsolv.cc +++ b/libsolv.cc @@ -656,8 +656,17 @@ SolverTasks::setTasks() case packagemeta::Install_action: if (pkg->desired) add(pkg->desired, taskInstall); // install/upgrade - else if (pkg->curr) - add(pkg->curr, taskInstallAny); // install + else + { + // install + // + // empty desired means "any version", it doesn't matter which one + // we use as taskInstallAny only match on the provides name + if (pkg->curr) + add(pkg->curr, taskInstallAny); + else if (pkg->exp) + add(pkg->exp, taskInstallAny); + } break; case packagemeta::Uninstall_action: diff --git a/localdir.cc b/localdir.cc index 7130a17c..52bf734e 100644 --- a/localdir.cc +++ b/localdir.cc @@ -46,7 +46,7 @@ #include "threebar.h" extern ThreeBarProgressPage Progress; -static StringOption LocalDirOption ("", 'l', "local-package-dir", "Local package directory", false); +static StringOption LocalDirOption ("", 'l', "local-package-dir", IDS_HELPTEXT_LOCAL_PACKAGE_DIR, false); static ControlAdjuster::ControlInfo LocaldirControlsInfo[] = { { IDC_LOCALDIR_GRP, CP_STRETCH, CP_TOP }, diff --git a/main.cc b/main.cc index 9d1f419d..3a8c5ea5 100644 --- a/main.cc +++ b/main.cc @@ -95,18 +95,18 @@ static StringChoiceOption::StringChoices symlink_types({ {"wsl", SymlinkTypeWsl}, }); -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"); -static BoolOption NoAdminOption (false, 'B', "no-admin", "Do not check for and enforce running as Administrator"); -static BoolOption WaitOption (false, 'W', "wait", "When elevating, wait for elevated child process"); -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"); -static BoolOption DeprecatedOption (false, 'w', "no-warn-deprecated-windows", "Warn about deprecated Windows versions"); -static StringChoiceOption SymlinkTypeOption(symlink_types, '\0', "symlink-type", "Symlink type (lnk, native, sys, wsl)", false, SymlinkTypeMagic); -static StringOption GuiLangOption ("", '\0', "lang", "Specify GUI language langid"); +static StringOption Arch ("", 'a', "arch", IDS_HELPTEXT_ARCH, false); +static BoolOption UnattendedOption (false, 'q', "quiet-mode", IDS_HELPTEXT_QUIET_MODE); +static BoolOption PackageManagerOption (false, 'M', "package-manager", IDS_HELPTEXT_PACKAGE_MANAGER); +static BoolOption NoAdminOption (false, 'B', "no-admin", IDS_HELPTEXT_NO_ADMIN); +static BoolOption WaitOption (false, 'W', "wait", IDS_HELPTEXT_WAIT); +static BoolOption HelpOption (false, 'h', "help", IDS_HELPTEXT_HELP); +static BoolOption VersionOption (false, 'V', "version", IDS_HELPTEXT_VERSION); +static StringOption SetupBaseNameOpt ("setup", 'i', "ini-basename", IDS_HELPTEXT_INI_BASENAME, false); +BoolOption UnsupportedOption (false, '\0', "allow-unsupported-windows", IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS); +static BoolOption DeprecatedOption (false, 'w', "no-warn-deprecated-windows", IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS); +static StringChoiceOption SymlinkTypeOption(symlink_types, '\0', "symlink-type", IDS_HELPTEXT_SYMLINK_TYPE, false, SymlinkTypeMagic); +static StringOption GuiLangOption ("", '\0', "lang", IDS_HELPTEXT_LANG); std::string SetupBaseName; @@ -310,15 +310,19 @@ WinMain (HINSTANCE h, << setup_version << endLog; } + /* Some confusion of interfaces here: Normally we try to write un-localized + strings to the log. However, if output_only is true, then we know that + Log() is only outputting to console, not a logfile, so using localized + text is ok. */ if (help_option) { - if (invalid_option) - Log (LOG_PLAIN) << "\nError during option processing.\n" << endLog; + if (invalid_option) + Log (LOG_PLAIN) << "\n" << LoadStringUtf8(IDS_HELPTEXT_ERROR) << "\n" << endLog; Log (LOG_PLAIN) << "Cygwin setup " << setup_version << endLog; - Log (LOG_PLAIN) << "\nCommand Line Options:\n" << endLog; - GetOption::GetInstance ().ParameterUsage (Log (LOG_PLAIN)); + Log (LOG_PLAIN) << "\n" << LoadStringUtf8(IDS_HELPTEXT_HEADER) << "\n" << endLog; + GetOption::GetInstance ().ParameterUsage (Log (LOG_PLAIN), LoadStringUtf8); Log (LOG_PLAIN) << endLog; - Log (LOG_PLAIN) << "The default is to both download and install packages, unless either --download or --local-install is specified." << endLog; + Log (LOG_PLAIN) << LoadStringUtf8(IDS_HELPTEXT_FOOTER) << endLog; Logger ().exit (invalid_option ? 1 : 0, false); goto finish_up; } diff --git a/net.cc b/net.cc index ad497caf..f460efc8 100644 --- a/net.cc +++ b/net.cc @@ -35,7 +35,7 @@ #include "ConnectionSetting.h" extern ThreeBarProgressPage Progress; -static StringOption ProxyOption ("", 'p', "proxy", "HTTP/FTP proxy (host:port)", false); +static StringOption ProxyOption ("", 'p', "proxy", IDS_HELPTEXT_PROXY, false); 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 876aac63..2117e33e 100644 --- a/nio-ie5.cc +++ b/nio-ie5.cc @@ -32,7 +32,7 @@ #include <sstream> #include <iomanip> -static StringOption UserAgent ("", '\0', "user-agent", "User agent string for HTTP requests"); +static StringOption UserAgent ("", '\0', "user-agent", IDS_HELPTEXT_USER_AGENT); static const std::string machine_name(USHORT machine) diff --git a/package_db.cc b/package_db.cc index 03591d75..b02d6dcd 100644 --- a/package_db.cc +++ b/package_db.cc @@ -43,7 +43,7 @@ #include "csu_util/version_compare.h" #include "getopt++/BoolOption.h" -static BoolOption MirrorOption (false, 'm', "mirror-mode", "Skip package availability check when installing from local directory (requires local directory to be clean mirror!)"); +static BoolOption MirrorOption (false, 'm', "mirror-mode", IDS_HELPTEXT_MIRROR_MODE); packagedb::packagedb () { diff --git a/package_meta.cc b/package_meta.cc index 1c6183c6..8a695257 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -43,10 +43,10 @@ #include "Exception.h" #include "resource.h" -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"); +static StringArrayOption DeletePackageOption ('x', "remove-packages", IDS_HELPTEXT_REMOVE_PACKAGES); +static StringArrayOption DeleteCategoryOption ('c', "remove-categories", IDS_HELPTEXT_REMOVE_CATEGORIES); +static StringArrayOption PackageOption ('P', "packages", IDS_HELPTEXT_PACKAGES); +static StringArrayOption CategoryOption ('C', "categories", IDS_HELPTEXT_CATEGORIES); bool hasManualSelections = 0; /*****************/ diff --git a/po/fr/res.po b/po/fr/res.po index a1bea77d..a741eaa8 100644 --- a/po/fr/res.po +++ b/po/fr/res.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-06 19:04+0100\n" +"POT-Creation-Date: 2022-06-17 10:45+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -150,7 +150,7 @@ msgstr "Juste &Moi" #: DIALOG.IDD_ROOT.LTEXT.IDC_ALLUSERS_TEXT msgid "Cygwin will be available to all users of the system." -msgstr "Cygwin sera disponible pour tous les utilisateurs" +msgstr "Cygwin sera disponible pour tous les utilisateurs." #: DIALOG.IDD_ROOT.LTEXT.IDC_JUSTME_TEXT msgid "" @@ -172,7 +172,7 @@ msgid "Available Download Sites:" msgstr "Sites disponibles :" #: DIALOG.IDD_SITE.LTEXT.IDC_STATIC -msgid "Choose a site from this list, or add your own sites to the list" +msgid "Choose a site from this list, or add your own sites to the list." msgstr "" "Choisissez un site dans cette liste, ou ajoutez vos propres sites à la liste." @@ -480,12 +480,12 @@ msgid "&Hide obsolete packages" msgstr "&Cacher les paquets obsolètes" #: DIALOG.IDD_CHOOSE.LTEXT.IDC_CHOOSE_INST_TEXT_DOWNLOAD -msgid "Select packages to download" -msgstr "Sélectionnez les paquets à télécharger" +msgid "Select packages to download." +msgstr "Sélectionnez les paquets à télécharger." #: DIALOG.IDD_CHOOSE.LTEXT.IDC_CHOOSE_INST_TEXT_INSTALL -msgid "Select packages to install" -msgstr "Sélectionnez les paquets à installer" +msgid "Select packages to install." +msgstr "Sélectionnez les paquets à installer." #: DIALOG.IDD_CHOOSE.LTEXT.IDC_STATIC_HEADER_TITLE msgid "Select Packages" @@ -502,7 +502,7 @@ msgstr "Résolution des dépendances" #: DIALOG.IDD_PREREQ.LTEXT.IDC_STATIC msgid "The following problems occured trying to satisfy dependencies." msgstr "" -"Les problèmes suivants apparaissent lors de la résolution des dépendances" +"Les problèmes suivants apparaissent lors de la résolution des dépendances." #: DIALOG.IDD_PREREQ.CONTROL.IDC_PREREQ_CHECK msgid "&Accept default problem solutions" @@ -623,7 +623,7 @@ msgstr "Impossible d'extraire" #: DIALOG.IDD_FILE_INUSE.LTEXT.IDC_STATIC msgid "The file is in use by the following processes:" -msgstr "Ce fichier est en cours d'utilisation par : " +msgstr "Ce fichier est en cours d'utilisation par :" #: DIALOG.IDD_FILE_INUSE.LTEXT.IDC_FILE_INUSE_HELP_0 msgid "" @@ -740,7 +740,7 @@ msgstr "Impossible d'ouvrir le fichier de trace %s en écriture" #: STRINGTABLE.IDS_UNINSTALL_COMPLETE msgid "Uninstalls complete." -msgstr "Désinstallation terminée" +msgstr "Désinstallation terminée." #: STRINGTABLE.IDS_ERR_CHDIR msgid "Could not change dir to %s: %s [%.8x]" @@ -813,7 +813,7 @@ msgstr "" "Erreur Fatale : exception non traitée\n" "Thread : %s\n" "Type : %s\n" -"Message: %s\n" +"Message : %s\n" "AppErrNo : %d" #: STRINGTABLE.IDS_TRUSTKEEP_TOOLTIP @@ -825,7 +825,7 @@ msgstr "" "demander à l'assistant de ne faire aucun changement aux paquets." #: STRINGTABLE.IDS_TRUSTCURR_TOOLTIP -msgid "Sets all packages to the best version available. (RECOMMENDED)" +msgid "Sets all packages to the best version available (RECOMMENDED)." msgstr "" "Sélectionne globalement la version qui est actuellement considérée comme la " "meilleure (RECOMMANDÉ)." @@ -1096,7 +1096,7 @@ msgstr "Assistant Cygwin" #: STRINGTABLE.IDS_EXTRACTION_FAILED msgid "Unable to extract /%s -- corrupt package?" -msgstr "Impossible d'extraire /%s -- paquet corrompu ?\r\n" +msgstr "Impossible d'extraire /%s -- paquet corrompu ?" #: STRINGTABLE.IDS_EXTRACTION_INUSE msgid "" @@ -1171,7 +1171,7 @@ msgstr "" #: STRINGTABLE.IDS_NIO_ERROR msgid "Internet Error: %s" -msgstr "Erreur Internet: %s" +msgstr "Erreur Internet : %s" #: STRINGTABLE.IDS_PREREQ_UNSOLVED_PROBLEMS msgid "" @@ -1293,3 +1293,210 @@ msgstr "&Tuer les processus" msgctxt "STRINGTABLE.IDS_FILE_INUSE_MSG" msgid "Unable to extract" msgstr "Incapable d'extraire" + +#: STRINGTABLE.IDS_HELPTEXT_ERROR +msgid "Error during option processing." +msgstr "Erreur pendant l'analyse des options." + +#: STRINGTABLE.IDS_HELPTEXT_HEADER +msgid "Command Line Options:" +msgstr "Options de la ligne de commandes :" + +#: STRINGTABLE.IDS_HELPTEXT_FOOTER +msgid "" +"The default is to both download and install packages, unless either --" +"download or --local-install is specified." +msgstr "" +"Par défault téléchargement et installation des paquets, sauf si --download " +"ou --local-install sont spécifiés." + +#: STRINGTABLE.IDS_HELPTEXT_ALLOW_TEST +msgid "Consider package versions marked test" +msgstr "Prendre en compte les paquets marqués test" + +#: STRINGTABLE.IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS +msgid "Allow old, unsupported Windows versions" +msgstr "Autoriser les vieilles versions de Windows" + +#: STRINGTABLE.IDS_HELPTEXT_ARCH +msgid "Architecture to install (x86_64 or x86)" +msgstr "Architecture à installer (x86_64 ou x86)" + +#: STRINGTABLE.IDS_HELPTEXT_CATEGORIES +msgid "Specify categories to install" +msgstr "Spécifie les catégories à installer" + +#: STRINGTABLE.IDS_HELPTEXT_COMPACTOS +msgid "" +"Compress installed files with Compact OS (xpress4k, xpress8k, xpress16k, lzx)" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_DELETE_ORPHANS +msgid "Remove orphaned packages" +msgstr "Supprimer les paquets orphelins" + +#: STRINGTABLE.IDS_HELPTEXT_DISABLE_ANTIVIRUS +msgid "" +"Disable known or suspected buggy anti virus software packages during " +"execution" +msgstr "Inhibe les anti-virus buggés à l'exécution" + +#: STRINGTABLE.IDS_HELPTEXT_DOWNLOAD +msgid "Download packages from internet" +msgstr "Télécharger depuis internet" + +#: STRINGTABLE.IDS_HELPTEXT_FORCE_CURRENT +msgid "Select the current version for all packages" +msgstr "Choisir la version courante pour tous les paquets" + +#: STRINGTABLE.IDS_HELPTEXT_HELP +msgid "Print help" +msgstr "Afficher l'aide" + +#: STRINGTABLE.IDS_HELPTEXT_INCLUDE_SOURCE +msgid "Automatically install source for every package installed" +msgstr "Ajouter automatiquement les sources de chaque paquet installé" + +#: STRINGTABLE.IDS_HELPTEXT_INI_BASENAME +msgid "Use a different basename, e.g. \"\"foo\"\", instead of \"\"setup\"\"" +msgstr "Utiliser un nom de base différent, p.ex. «toto», au lieu de «setup»" + +#: STRINGTABLE.IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS +msgid "Use untrusted keys and retain all" +msgstr "Utiliser les clés non-fiables et les garder" + +#: STRINGTABLE.IDS_HELPTEXT_LANG +msgid "Specify GUI language langid" +msgstr "Choisir la langue de l'IHM" + +#: STRINGTABLE.IDS_HELPTEXT_LOCAL_INSTALL +msgid "Install packages from local directory" +msgstr "Installer depuis un répertoire local" + +#: STRINGTABLE.IDS_HELPTEXT_LOCAL_PACKAGE_DIR +msgid "Local package directory" +msgstr "Dossier local pour les paquets" + +#: STRINGTABLE.IDS_HELPTEXT_MIRROR_MODE +msgid "" +"Skip package availability check when installing from local directory (" +"requires local directory to be clean mirror!)" +msgstr "" +"Ne pas vérifier la présence d'un paquet depuis un dossier local (celui-ci " +"doit être un miroir propre !)" + +#: STRINGTABLE.IDS_HELPTEXT_NO_ADMIN +msgid "Do not check for and enforce running as Administrator" +msgstr "Ne pas vérifier et forcer à installer en tant qu'administrateur" + +#: STRINGTABLE.IDS_HELPTEXT_NO_DESKTOP +msgid "Disable creation of desktop shortcut" +msgstr "Pas de création de raccourci de bureau" + +#: STRINGTABLE.IDS_HELPTEXT_NO_REPLACEONREBOOT +msgid "Disable replacing in-use files on next reboot" +msgstr "" +"Inhibe le remplacement des fichiers en cours d'utilisation au prochain " +"redémarrage" + +#: STRINGTABLE.IDS_HELPTEXT_NO_SHORTCUTS +msgid "Disable creation of desktop and start menu shortcuts" +msgstr "Pas de création de raccourcis de bureau et de menu" + +#: STRINGTABLE.IDS_HELPTEXT_NO_STARTMENU +msgid "Disable creation of start menu shortcut" +msgstr "Pas de création de raccourci de menu" + +#: STRINGTABLE.IDS_HELPTEXT_NO_VERIFY +msgid "Don't verify setup.ini signatures" +msgstr "Ne pas vérifier les signatures de setup.ini" + +#: STRINGTABLE.IDS_HELPTEXT_NO_VERSION_CHECK +msgid "Suppress checking if a newer version of setup is available" +msgstr "" +"Ne pas vérifier si une version plus récente de l'assistant est disponible" + +#: STRINGTABLE.IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS +msgid "Don't warn about deprecated Windows versions" +msgstr "Ne pas avertir pour les vieilles versions de Windows" + +#: STRINGTABLE.IDS_HELPTEXT_OLD_KEYS +msgid "Enable old cygwin.com keys" +msgstr "Utiliser les anciennes clés de cygwin.com" + +#: STRINGTABLE.IDS_HELPTEXT_ONLY_SITE +msgid "Do not download mirror list. Only use sites specified with -s." +msgstr "Ignorer tous les sites sauf ceux spécifiés par -s" + +#: STRINGTABLE.IDS_HELPTEXT_PACKAGES +msgid "Specify packages to install" +msgstr "Spécifie les paquets à installer" + +#: STRINGTABLE.IDS_HELPTEXT_PACKAGE_MANAGER +msgid "Semi-attended chooser-only mode" +msgstr "Mode assistant sélection seulement" + +#: STRINGTABLE.IDS_HELPTEXT_PROXY +msgid "HTTP/FTP proxy (host:port)" +msgstr "Proxy HTTP/FTP (serveur:port)" + +#: STRINGTABLE.IDS_HELPTEXT_PRUNE_INSTALL +msgid "Prune the installation to only the requested packages" +msgstr "Purger l'installation pour n'avoir que les paquets demandés" + +#: STRINGTABLE.IDS_HELPTEXT_PUBKEY +msgid "URL or absolute path of extra public key file (RFC4880 format)" +msgstr "" +"URL ou chemin complet d'une clé publique supplémentaire (format RFC4880)" + +#: STRINGTABLE.IDS_HELPTEXT_QUIET_MODE +msgid "Unattended setup mode" +msgstr "Assistant sans messages" + +#: STRINGTABLE.IDS_HELPTEXT_REMOVE_CATEGORIES +msgid "Specify categories to uninstall" +msgstr "Spécifie les catégories à désinstaller" + +#: STRINGTABLE.IDS_HELPTEXT_REMOVE_PACKAGES +msgid "Specify packages to uninstall" +msgstr "Spécifie les paquets à désinstaller" + +#: STRINGTABLE.IDS_HELPTEXT_ROOT +msgid "Root installation directory" +msgstr "Dossier racine de l'installation" + +#: STRINGTABLE.IDS_HELPTEXT_SEXPR_PUBKEY +msgid "Extra DSA public key in s-expr format" +msgstr "Clé publique DSA supplémentaire au format s-expr" + +#: STRINGTABLE.IDS_HELPTEXT_SITE +msgid "Download site URL" +msgstr "URL du site de téléchargement" + +#: STRINGTABLE.IDS_HELPTEXT_SYMLINK_TYPE +msgid "Symlink type (lnk, native, sys, wsl)" +msgstr "Type de lien symbolique (lnk, native, sys, wsl)" + +#: STRINGTABLE.IDS_HELPTEXT_UNTRUSTED_KEYS +msgid "Use untrusted saved extra keys" +msgstr "Utiliser les clés non-fiables enregistrées" + +#: STRINGTABLE.IDS_HELPTEXT_UPGRADE_ALSO +msgid "Also upgrade installed packages" +msgstr "Mettre à jour les paquets installés" + +#: STRINGTABLE.IDS_HELPTEXT_USER_AGENT +msgid "User agent string for HTTP requests" +msgstr "« User agent » pour les requêtes HTTP" + +#: STRINGTABLE.IDS_HELPTEXT_VERBOSE +msgid "Verbose output" +msgstr "Affichages verbeux" + +#: STRINGTABLE.IDS_HELPTEXT_VERSION +msgid "Show version" +msgstr "Montrer la version" + +#: STRINGTABLE.IDS_HELPTEXT_WAIT +msgid "When elevating, wait for elevated child process" +msgstr "Attendre le process fils en mode élévation" diff --git a/prereq.cc b/prereq.cc index 65a6b391..8c96cebf 100644 --- a/prereq.cc +++ b/prereq.cc @@ -32,7 +32,7 @@ static ControlAdjuster::ControlInfo PrereqControlsInfo[] = { }; extern ThreeBarProgressPage Progress; -BoolOption IncludeSource (false, 'I', "include-source", "Automatically install source for every package installed"); +BoolOption IncludeSource (false, 'I', "include-source", IDS_HELPTEXT_INCLUDE_SOURCE); // --------------------------------------------------------------------------- // implements class PrereqPage diff --git a/res.pot b/res.pot index 3b347250..f2aaa60e 100644 --- a/res.pot +++ b/res.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-06-14 13:10+0100\n" +"POT-Creation-Date: 2022-06-17 10:45+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -155,7 +155,7 @@ msgid "Available Download Sites:" msgstr "" #: DIALOG.IDD_SITE.LTEXT.IDC_STATIC -msgid "Choose a site from this list, or add your own sites to the list" +msgid "Choose a site from this list, or add your own sites to the list." msgstr "" #: DIALOG.IDD_SITE.LTEXT.IDC_STATIC_HEADER_TITLE @@ -448,11 +448,11 @@ msgid "&Hide obsolete packages" msgstr "" #: DIALOG.IDD_CHOOSE.LTEXT.IDC_CHOOSE_INST_TEXT_DOWNLOAD -msgid "Select packages to download" +msgid "Select packages to download." msgstr "" #: DIALOG.IDD_CHOOSE.LTEXT.IDC_CHOOSE_INST_TEXT_INSTALL -msgid "Select packages to install" +msgid "Select packages to install." msgstr "" #: DIALOG.IDD_CHOOSE.LTEXT.IDC_STATIC_HEADER_TITLE @@ -740,7 +740,7 @@ msgid "" msgstr "" #: STRINGTABLE.IDS_TRUSTCURR_TOOLTIP -msgid "Sets all packages to the best version available. (RECOMMENDED)" +msgid "Sets all packages to the best version available (RECOMMENDED)." msgstr "" #: STRINGTABLE.IDS_TRUSTSYNC_TOOLTIP @@ -1134,3 +1134,202 @@ msgstr "" msgctxt "STRINGTABLE.IDS_FILE_INUSE_MSG" msgid "Unable to extract" msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_ERROR +msgid "Error during option processing." +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_HEADER +msgid "Command Line Options:" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_FOOTER +msgid "" +"The default is to both download and install packages, unless either --" +"download or --local-install is specified." +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_ALLOW_TEST +msgid "Consider package versions marked test" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS +msgid "Allow old, unsupported Windows versions" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_ARCH +msgid "Architecture to install (x86_64 or x86)" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_CATEGORIES +msgid "Specify categories to install" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_COMPACTOS +msgid "" +"Compress installed files with Compact OS (xpress4k, xpress8k, xpress16k, lzx)" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_DELETE_ORPHANS +msgid "Remove orphaned packages" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_DISABLE_ANTIVIRUS +msgid "" +"Disable known or suspected buggy anti virus software packages during " +"execution" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_DOWNLOAD +msgid "Download packages from internet" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_FORCE_CURRENT +msgid "Select the current version for all packages" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_HELP +msgid "Print help" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_INCLUDE_SOURCE +msgid "Automatically install source for every package installed" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_INI_BASENAME +msgid "Use a different basename, e.g. \"\"foo\"\", instead of \"\"setup\"\"" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS +msgid "Use untrusted keys and retain all" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_LANG +msgid "Specify GUI language langid" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_LOCAL_INSTALL +msgid "Install packages from local directory" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_LOCAL_PACKAGE_DIR +msgid "Local package directory" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_MIRROR_MODE +msgid "" +"Skip package availability check when installing from local directory (" +"requires local directory to be clean mirror!)" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_ADMIN +msgid "Do not check for and enforce running as Administrator" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_DESKTOP +msgid "Disable creation of desktop shortcut" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_REPLACEONREBOOT +msgid "Disable replacing in-use files on next reboot" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_SHORTCUTS +msgid "Disable creation of desktop and start menu shortcuts" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_STARTMENU +msgid "Disable creation of start menu shortcut" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_VERIFY +msgid "Don't verify setup.ini signatures" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_VERSION_CHECK +msgid "Suppress checking if a newer version of setup is available" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS +msgid "Don't warn about deprecated Windows versions" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_OLD_KEYS +msgid "Enable old cygwin.com keys" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_ONLY_SITE +msgid "Do not download mirror list. Only use sites specified with -s." +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_PACKAGES +msgid "Specify packages to install" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_PACKAGE_MANAGER +msgid "Semi-attended chooser-only mode" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_PROXY +msgid "HTTP/FTP proxy (host:port)" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_PRUNE_INSTALL +msgid "Prune the installation to only the requested packages" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_PUBKEY +msgid "URL or absolute path of extra public key file (RFC4880 format)" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_QUIET_MODE +msgid "Unattended setup mode" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_REMOVE_CATEGORIES +msgid "Specify categories to uninstall" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_REMOVE_PACKAGES +msgid "Specify packages to uninstall" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_ROOT +msgid "Root installation directory" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_SEXPR_PUBKEY +msgid "Extra DSA public key in s-expr format" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_SITE +msgid "Download site URL" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_SYMLINK_TYPE +msgid "Symlink type (lnk, native, sys, wsl)" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_UNTRUSTED_KEYS +msgid "Use untrusted saved extra keys" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_UPGRADE_ALSO +msgid "Also upgrade installed packages" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_USER_AGENT +msgid "User agent string for HTTP requests" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_VERBOSE +msgid "Verbose output" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_VERSION +msgid "Show version" +msgstr "" + +#: STRINGTABLE.IDS_HELPTEXT_WAIT +msgid "When elevating, wait for elevated child process" +msgstr "" diff --git a/res/en/res.rc b/res/en/res.rc index 127f3688..d5f6d1f1 100644 --- a/res/en/res.rc +++ b/res/en/res.rc @@ -132,7 +132,7 @@ BEGIN WS_GROUP CONTROL "",IDC_HEADSEPARATOR,"Static",SS_BLACKFRAME | SS_SUNKEN,0,28, SETUP_STANDARD_DIALOG_W,1 - LTEXT "Choose a site from this list, or add your own sites to the list", + LTEXT "Choose a site from this list, or add your own sites to the list.", IDC_STATIC,21,9,239,16,NOT WS_GROUP LTEXT "Choose A Download Site",IDC_STATIC_HEADER_TITLE,7,0,258, 8,NOT WS_GROUP @@ -335,9 +335,9 @@ BEGIN CONTROL "&Hide obsolete packages", IDC_CHOOSE_HIDE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 167, 160, 14 ICON IDI_CYGWIN, IDC_HEADICON, SETUP_HEADICON_X, 0, 21, 20 - LTEXT "Select packages to download", + LTEXT "Select packages to download.", IDC_CHOOSE_INST_TEXT_DOWNLOAD, 21, 9, 239, 16, NOT WS_GROUP - LTEXT "Select packages to install", + LTEXT "Select packages to install.", IDC_CHOOSE_INST_TEXT_INSTALL, 21, 9, 239, 16, NOT WS_GROUP LTEXT "Select Packages", IDC_STATIC_HEADER_TITLE, 7, 0, 258, 8, NOT WS_GROUP @@ -514,8 +514,8 @@ BEGIN IDS_TRUSTKEEP_TOOLTIP "Sets all packages to their currently installed " "version. This is equivalent to telling setup not to make any " "changes to any package." - IDS_TRUSTCURR_TOOLTIP "Sets all packages to the best version available. " - "(RECOMMENDED)" + IDS_TRUSTCURR_TOOLTIP "Sets all packages to the best version available " + "(RECOMMENDED)." IDS_TRUSTSYNC_TOOLTIP "Sets all packages to the version available from the " "package repository, downgrading if necessary." IDS_TRUSTEXP_TOOLTIP "Enable test packages." @@ -644,3 +644,59 @@ BEGIN IDS_FILE_INUSE_KILL "&Kill Processes" IDS_FILE_INUSE_MSG "Unable to extract" END + +// +// Option Helptext String Table +// + +STRINGTABLE +BEGIN + IDS_HELPTEXT_ERROR "Error during option processing." + IDS_HELPTEXT_HEADER "Command Line Options:" + IDS_HELPTEXT_FOOTER "The default is to both download and install packages, unless either --download or --local-install is specified." + IDS_HELPTEXT_ALLOW_TEST "Consider package versions marked test" + IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS "Allow old, unsupported Windows versions" + IDS_HELPTEXT_ARCH "Architecture to install (x86_64 or x86)" + IDS_HELPTEXT_CATEGORIES "Specify categories to install" + IDS_HELPTEXT_COMPACTOS "Compress installed files with Compact OS (xpress4k, xpress8k, xpress16k, lzx)" + IDS_HELPTEXT_DELETE_ORPHANS "Remove orphaned packages" + IDS_HELPTEXT_DISABLE_ANTIVIRUS "Disable known or suspected buggy anti virus software packages during execution" + IDS_HELPTEXT_DOWNLOAD "Download packages from internet" + IDS_HELPTEXT_FORCE_CURRENT "Select the current version for all packages" + IDS_HELPTEXT_HELP "Print help" + IDS_HELPTEXT_INCLUDE_SOURCE "Automatically install source for every package installed" + IDS_HELPTEXT_INI_BASENAME "Use a different basename, e.g. ""foo"", instead of ""setup""" + IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS "Use untrusted keys and retain all" + IDS_HELPTEXT_LANG "Specify GUI language langid" + IDS_HELPTEXT_LOCAL_INSTALL "Install packages from local directory" + IDS_HELPTEXT_LOCAL_PACKAGE_DIR "Local package directory" + IDS_HELPTEXT_MIRROR_MODE "Skip package availability check when installing from local directory (requires local directory to be clean mirror!)" + IDS_HELPTEXT_NO_ADMIN "Do not check for and enforce running as Administrator" + IDS_HELPTEXT_NO_DESKTOP "Disable creation of desktop shortcut" + IDS_HELPTEXT_NO_REPLACEONREBOOT "Disable replacing in-use files on next reboot" + IDS_HELPTEXT_NO_SHORTCUTS "Disable creation of desktop and start menu shortcuts" + IDS_HELPTEXT_NO_STARTMENU "Disable creation of start menu shortcut" + IDS_HELPTEXT_NO_VERIFY "Don't verify setup.ini signatures" + IDS_HELPTEXT_NO_VERSION_CHECK "Suppress checking if a newer version of setup is available" + IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS "Don't warn about deprecated Windows versions" + IDS_HELPTEXT_OLD_KEYS "Enable old cygwin.com keys" + IDS_HELPTEXT_ONLY_SITE "Do not download mirror list. Only use sites specified with -s." + IDS_HELPTEXT_PACKAGES "Specify packages to install" + IDS_HELPTEXT_PACKAGE_MANAGER "Semi-attended chooser-only mode" + IDS_HELPTEXT_PROXY "HTTP/FTP proxy (host:port)" + IDS_HELPTEXT_PRUNE_INSTALL "Prune the installation to only the requested packages" + IDS_HELPTEXT_PUBKEY "URL or absolute path of extra public key file (RFC4880 format)" + IDS_HELPTEXT_QUIET_MODE "Unattended setup mode" + IDS_HELPTEXT_REMOVE_CATEGORIES "Specify categories to uninstall" + IDS_HELPTEXT_REMOVE_PACKAGES "Specify packages to uninstall" + IDS_HELPTEXT_ROOT "Root installation directory" + IDS_HELPTEXT_SEXPR_PUBKEY "Extra DSA public key in s-expr format" + IDS_HELPTEXT_SITE "Download site URL" + IDS_HELPTEXT_SYMLINK_TYPE "Symlink type (lnk, native, sys, wsl)" + IDS_HELPTEXT_UNTRUSTED_KEYS "Use untrusted saved extra keys" + IDS_HELPTEXT_UPGRADE_ALSO "Also upgrade installed packages" + IDS_HELPTEXT_USER_AGENT "User agent string for HTTP requests" + IDS_HELPTEXT_VERBOSE "Verbose output" + IDS_HELPTEXT_VERSION "Show version" + IDS_HELPTEXT_WAIT "When elevating, wait for elevated child process" +END diff --git a/res/fr/res.rc b/res/fr/res.rc index 666d3d4d..3468e45e 100644 --- a/res/fr/res.rc +++ b/res/fr/res.rc @@ -101,7 +101,7 @@ BEGIN 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", + 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 icônes et les menus uniquement pour l'utilisateur " @@ -323,9 +323,9 @@ BEGIN CONTROL "&Cacher 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 à télécharger", + LTEXT "Sélectionnez les paquets à télécharger.", IDC_CHOOSE_INST_TEXT_DOWNLOAD, 21, 9, 239, 16, NOT WS_GROUP - LTEXT "Sélectionnez les paquets à installer", + LTEXT "Sélectionnez les paquets à installer.", IDC_CHOOSE_INST_TEXT_INSTALL, 21, 9, 239, 16, NOT WS_GROUP LTEXT "Sélection des paquets",IDC_STATIC_HEADER_TITLE,7,0,258,8, NOT WS_GROUP @@ -343,7 +343,7 @@ BEGIN 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 + "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 @@ -445,7 +445,7 @@ BEGIN ICON IDI_WARNING,IDC_HEADICON,10,10 LTEXT "Impossible d'extraire", IDC_FILE_INUSE_MSG,33,10,234,8,SS_PATHELLIPSIS - LTEXT "Ce fichier est en cours d'utilisation par : ", + 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 | @@ -486,7 +486,7 @@ BEGIN 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_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 ?" @@ -497,7 +497,7 @@ BEGIN 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_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." @@ -573,7 +573,7 @@ BEGIN IDS_COLUMN_SIZE "Taille" IDS_COLUMN_DESCR "Description" IDS_MBOX_CAPTION "Assistant Cygwin" - IDS_EXTRACTION_FAILED "Impossible d'extraire /%s -- paquet corrompu ?\r\n" + IDS_EXTRACTION_FAILED "Impossible d'extraire /%s -- paquet corrompu ?" IDS_EXTRACTION_INUSE "Incapable d'extraire /%s -- erreur à l'écriture du fichier\r\n" "Le fichier est utilisé ou une autre erreur est survenue.\r\n" @@ -592,7 +592,7 @@ BEGIN IDS_DEPRECATED_WINDOWS_VERSION "Cygwin n'est plus supporté pour cette version de Windows, et sera enlevé dans la prochaine version majeure" IDS_DEPRECATED_WINDOWS_ARCH "Cygwin n'est plus supporté pour Windows 32-bits, et sera enlevé dans la prochaine version majeure" IDS_MOUNT_REGISTRY_KEY_FAILED "Impossible de créer la clé de registre pour enregistrer le chemin d'installation" - IDS_NIO_ERROR "Erreur Internet: %s" + IDS_NIO_ERROR "Erreur Internet : %s" IDS_PREREQ_UNSOLVED_PROBLEMS "ATTENTION - Problèmes non résolus" "\r\n\r\n" @@ -630,3 +630,59 @@ BEGIN IDS_FILE_INUSE_KILL "&Tuer les processus" IDS_FILE_INUSE_MSG "Incapable d'extraire" END + +// +// Option Helptext String Table +// + +STRINGTABLE +BEGIN + IDS_HELPTEXT_ERROR "Erreur pendant l'analyse des options." + IDS_HELPTEXT_HEADER "Options de la ligne de commandes :" + IDS_HELPTEXT_FOOTER "Par défault téléchargement et installation des paquets, sauf si --download ou --local-install sont spécifiés." + IDS_HELPTEXT_ALLOW_TEST "Prendre en compte les paquets marqués test" + IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS "Autoriser les vieilles versions de Windows" + IDS_HELPTEXT_ARCH "Architecture à installer (x86_64 ou x86)" + IDS_HELPTEXT_CATEGORIES "Spécifie les catégories à installer" + // IDS_HELPTEXT_COMPACTOS "XXX: missing translation" + IDS_HELPTEXT_DELETE_ORPHANS "Supprimer les paquets orphelins" + IDS_HELPTEXT_DISABLE_ANTIVIRUS "Inhibe les anti-virus buggés à l'exécution" + IDS_HELPTEXT_DOWNLOAD "Télécharger depuis internet" + IDS_HELPTEXT_FORCE_CURRENT "Choisir la version courante pour tous les paquets" + IDS_HELPTEXT_HELP "Afficher l'aide" + IDS_HELPTEXT_INCLUDE_SOURCE "Ajouter automatiquement les sources de chaque paquet installé" + IDS_HELPTEXT_INI_BASENAME "Utiliser un nom de base différent, p.ex. «toto», au lieu de «setup»" + IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS "Utiliser les clés non-fiables et les garder" + IDS_HELPTEXT_LANG "Choisir la langue de l'IHM" + IDS_HELPTEXT_LOCAL_INSTALL "Installer depuis un répertoire local" + IDS_HELPTEXT_LOCAL_PACKAGE_DIR "Dossier local pour les paquets" + IDS_HELPTEXT_MIRROR_MODE "Ne pas vérifier la présence d'un paquet depuis un dossier local (celui-ci doit être un miroir propre !)" + IDS_HELPTEXT_NO_ADMIN "Ne pas vérifier et forcer à installer en tant qu'administrateur" + IDS_HELPTEXT_NO_DESKTOP "Pas de création de raccourci de bureau" + IDS_HELPTEXT_NO_REPLACEONREBOOT "Inhibe le remplacement des fichiers en cours d'utilisation au prochain redémarrage" + IDS_HELPTEXT_NO_SHORTCUTS "Pas de création de raccourcis de bureau et de menu" + IDS_HELPTEXT_NO_STARTMENU "Pas de création de raccourci de menu" + IDS_HELPTEXT_NO_VERIFY "Ne pas vérifier les signatures de setup.ini" + IDS_HELPTEXT_NO_VERSION_CHECK "Ne pas vérifier si une version plus récente de l'assistant est disponible" + IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS "Ne pas avertir pour les vieilles versions de Windows" + IDS_HELPTEXT_OLD_KEYS "Utiliser les anciennes clés de cygwin.com" + IDS_HELPTEXT_ONLY_SITE "Ignorer tous les sites sauf ceux spécifiés par -s" + IDS_HELPTEXT_PACKAGES "Spécifie les paquets à installer" + IDS_HELPTEXT_PACKAGE_MANAGER "Mode assistant sélection seulement" + IDS_HELPTEXT_PROXY "Proxy HTTP/FTP (serveur:port)" + IDS_HELPTEXT_PRUNE_INSTALL "Purger l'installation pour n'avoir que les paquets demandés" + IDS_HELPTEXT_PUBKEY "URL ou chemin complet d'une clé publique supplémentaire (format RFC4880)" + IDS_HELPTEXT_QUIET_MODE "Assistant sans messages" + IDS_HELPTEXT_REMOVE_CATEGORIES "Spécifie les catégories à désinstaller" + IDS_HELPTEXT_REMOVE_PACKAGES "Spécifie les paquets à désinstaller" + IDS_HELPTEXT_ROOT "Dossier racine de l'installation" + IDS_HELPTEXT_SEXPR_PUBKEY "Clé publique DSA supplémentaire au format s-expr" + IDS_HELPTEXT_SITE "URL du site de téléchargement" + IDS_HELPTEXT_SYMLINK_TYPE "Type de lien symbolique (lnk, native, sys, wsl)" + IDS_HELPTEXT_UNTRUSTED_KEYS "Utiliser les clés non-fiables enregistrées" + IDS_HELPTEXT_UPGRADE_ALSO "Mettre à jour les paquets installés" + IDS_HELPTEXT_USER_AGENT "« User agent » pour les requêtes HTTP" + IDS_HELPTEXT_VERBOSE "Affichages verbeux" + IDS_HELPTEXT_VERSION "Montrer la version" + IDS_HELPTEXT_WAIT "Attendre le process fils en mode élévation" +END diff --git a/resource.h b/resource.h index 6dfedccf..e8ed0fa9 100644 --- a/resource.h +++ b/resource.h @@ -106,6 +106,55 @@ #define IDS_DEPRECATED_WINDOWS_VERSION 1209 #define IDS_DEPRECATED_WINDOWS_ARCH 1210 +#define IDS_HELPTEXT_COMPACTOS 1500 +#define IDS_HELPTEXT_PUBKEY 1501 +#define IDS_HELPTEXT_SEXPR_PUBKEY 1502 +#define IDS_HELPTEXT_UNTRUSTED_KEYS 1503 +#define IDS_HELPTEXT_KEEP_UNTRUSTED_KEYS 1504 +#define IDS_HELPTEXT_OLD_KEYS 1505 +#define IDS_HELPTEXT_DISABLE_ANTIVIRUS 1506 +#define IDS_HELPTEXT_UPGRADE_ALSO 1507 +#define IDS_HELPTEXT_DELETE_ORPHANS 1508 +#define IDS_HELPTEXT_FORCE_CURRENT 1509 +#define IDS_HELPTEXT_PRUNE_INSTALL 1510 +#define IDS_HELPTEXT_ALLOW_TEST 1511 +#define IDS_HELPTEXT_NO_SHORTCUTS 1512 +#define IDS_HELPTEXT_NO_STARTMENU 1513 +#define IDS_HELPTEXT_NO_DESKTOP 1514 +#define IDS_HELPTEXT_NO_VERIFY 1515 +#define IDS_HELPTEXT_NO_VERSION_CHECK 1516 +#define IDS_HELPTEXT_NO_REPLACEONREBOOT 1517 +#define IDS_HELPTEXT_VERBOSE 1518 +#define IDS_HELPTEXT_LOCAL_PACKAGE_DIR 1519 +#define IDS_HELPTEXT_ARCH 1520 +#define IDS_HELPTEXT_QUIET_MODE 1521 +#define IDS_HELPTEXT_PACKAGE_MANAGER 1522 +#define IDS_HELPTEXT_NO_ADMIN 1523 +#define IDS_HELPTEXT_WAIT 1524 +#define IDS_HELPTEXT_HELP 1525 +#define IDS_HELPTEXT_VERSION 1526 +#define IDS_HELPTEXT_INI_BASENAME 1527 +#define IDS_HELPTEXT_ALLOW_UNSUPPORTED_WINDOWS 1528 +#define IDS_HELPTEXT_NO_WARN_DEPRECATED_WINDOWS 1529 +#define IDS_HELPTEXT_SYMLINK_TYPE 1530 +#define IDS_HELPTEXT_LANG 1531 +#define IDS_HELPTEXT_USER_AGENT 1532 +#define IDS_HELPTEXT_PROXY 1533 +#define IDS_HELPTEXT_MIRROR_MODE 1534 +#define IDS_HELPTEXT_REMOVE_PACKAGES 1535 +#define IDS_HELPTEXT_REMOVE_CATEGORIES 1536 +#define IDS_HELPTEXT_PACKAGES 1537 +#define IDS_HELPTEXT_CATEGORIES 1538 +#define IDS_HELPTEXT_INCLUDE_SOURCE 1539 +#define IDS_HELPTEXT_SITE 1540 +#define IDS_HELPTEXT_ONLY_SITE 1541 +#define IDS_HELPTEXT_DOWNLOAD 1542 +#define IDS_HELPTEXT_LOCAL_INSTALL 1543 +#define IDS_HELPTEXT_ROOT 1544 +#define IDS_HELPTEXT_ERROR 1545 +#define IDS_HELPTEXT_HEADER 1546 +#define IDS_HELPTEXT_FOOTER 1547 + // Dialogs #define IDD_SPLASH 200 diff --git a/root.cc b/root.cc index ddff3f0f..1723a532 100644 --- a/root.cc +++ b/root.cc @@ -38,7 +38,7 @@ #include "getopt++/StringOption.h" -StringOption RootOption ("", 'R', "root", "Root installation directory", false); +StringOption RootOption ("", 'R', "root", IDS_HELPTEXT_ROOT, false); static ControlAdjuster::ControlInfo RootControlsInfo[] = { { IDC_ROOTDIR_GRP, CP_STRETCH, CP_TOP }, diff --git a/site.cc b/site.cc index 57f54dde..33c06f01 100644 --- a/site.cc +++ b/site.cc @@ -91,9 +91,8 @@ SiteList cached_site_list; /* Stale selected sites to warn about and add to cache */ SiteList dropped_site_list; -StringArrayOption SiteOption('s', "site", "Download site URL"); - -BoolOption OnlySiteOption(false, 'O', "only-site", "Do not download mirror list. Only use sites specified with -s."); +StringArrayOption SiteOption('s', "site", IDS_HELPTEXT_SITE); +BoolOption OnlySiteOption(false, 'O', "only-site", IDS_HELPTEXT_ONLY_SITE); extern BoolOption UnsupportedOption; SiteSetting::SiteSetting (): saved (false) diff --git a/source.cc b/source.cc index 066da8de..63da0241 100644 --- a/source.cc +++ b/source.cc @@ -33,8 +33,8 @@ #include "getopt++/BoolOption.h" -static BoolOption DownloadOption (false, 'D', "download", "Download packages from internet"); -static BoolOption LocalOption (false, 'L', "local-install", "Install packages from local directory"); +static BoolOption DownloadOption (false, 'D', "download", IDS_HELPTEXT_DOWNLOAD); +static BoolOption LocalOption (false, 'L', "local-install", IDS_HELPTEXT_LOCAL_INSTALL); static int rb[] = { IDC_SOURCE_NETINST, IDC_SOURCE_DOWNLOAD, IDC_SOURCE_LOCALDIR, 0 }; diff --git a/win32.cc b/win32.cc index a403d662..55072a90 100644 --- a/win32.cc +++ b/win32.cc @@ -20,6 +20,7 @@ #include "resource.h" #include "ini.h" #include <sys/stat.h> +#include "String++.h" NTSecurity nt_sec; @@ -507,6 +508,12 @@ LoadStringW(unsigned int uID) return LoadStringWEx(uID, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } +const std::string +LoadStringUtf8(unsigned int uID) +{ + return wstring_to_string(LoadStringW(uID)); +} + bool is_developer_mode(void) { diff --git a/win32.h b/win32.h index dcaa2511..02c1d06e 100644 --- a/win32.h +++ b/win32.h @@ -194,6 +194,7 @@ SetDlgItemRect (HWND h, int item, LPRECT r) r->right - r->left, r->bottom - r->top, TRUE); } +const std::string LoadStringUtf8(unsigned int uID); const std::wstring LoadStringW(unsigned int uID); const std::wstring LoadStringWEx(UINT uID, UINT langId);