[setup - the official Cygwin setup program] branch master, updated. release_2.918-18-g212135ac
Jon TURNEY
jturney@sourceware.org
Fri Jun 17 12:47:01 GMT 2022
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);
More information about the Cygwin-apps-cvs
mailing list