updated Scottish Gaelic translation
wmllint: extend Elvish Hunter's Windows sys.argv fix to cover more cases

While testing my next commit, I discovered that EH's fix works when there is only one argument, or if the offender is the last argument, but doesn't work with multiple entries. His fix is meant to work on each argument, but the (unintentionally) escaped quote no longer serves to end the argument, causing following arguments to be considered part of the same argument.

Using split() allows us to break apart these misconjoined arguments. With rstrip(), we prevent an empty string that Windows will also complain it cannot find. However, if there are three or more arguments, there will still be lumped-together arguments unless all arguments up to the second from last also end with a backslash and quote. It is impossible to cover every possible case.

The re.sub handles the probably rare case where a backslash before a quote comes within the argument rather than at the end. However, it will only work if there is only one argument.

All this is unnecessary if the OS is not Windows (also, I haven't had the opportunity to test this on a non-Windows system to see if it has any side-effects there). So I've put it under a sys.platform condition.
wmllint: activate wildcard globbing on Windows

The Windows cmd shell does not expand wildcards by default, unlike UNIX shells. This imports glob.glob and runs arguments through it on Windows.

Frontported (in modified form) from my 1.4 work!
remove '~' in [textdomain] and [binary_path] paths

Although the original purpose of the in_textdomain and in_binary_path code, an aborted effort to update their paths to "data/add-ons/", has been superseded by code that updates those paths on all lines, it can still be put to use.

Our first step is to move that section below the code that updated UMC paths, so our regexes won't have to deal with "@campaigns" and "data/campaigns" strings. Then we delete the 'if 0:' line that was neutralizing this section, as well as the obsolete path-changing code. The rest is de-indented one level.

Then we look for the use of "~" for userdata, which does not work for textdomains and binary paths.

Our regex object, 'tilde', is constituted thusly: (1) We make sure that the line starts with the "path" key. Any line we're interested in ought to start with this, and this will also keep this code from going wild on the campaign includes, if an author forgot a closing tag (no reset to False). (x) There shouldn't be any whitespace around the = sign, but we'll be kind. (2) On the value side, there shouldn't be anything before the tilde except perhaps a quote. Rather than underestimate the ingenuity of authors in coming up with weird code, however, I allow anything except a comment to match for a few characters. But if we haven't hit the '~' after five characters, I figure something's wrong, and bail. (3) Then we come to the tilde. Normally, it would be adjoining "add-ons/", but some authors interpolate a slash, or 'data/' (here represented as an optional string).

If we match, we rebuild the line, except 'data/add-ons' is substituted for group(3), and we log to stdout.
C++ style structs.
Ignore QtCreator generated project files.
Change a French identifier to English.
Convert camelcase identifiers to Wesnoth style.
Use initializer lists in constructors.
Remove redundant code.
ya_mapgen: make data members private.
Better data member names.
TSG: fixed 'lich found' message appearing twice in scenario 5
[allow_recruit], [disallow_recruit]: added a less cryptic error message if type= is missing
mute some MSVC warnings
Remove old-style-casts.
Fix a broken include path.
Messenger Micro AI: move duplicate code into a function
sys.exit(1) if globbing matches no files/directories

After more testing, I realized that I did not take into account the possibility that the wildcard pattern would not match anything. In that case, the following 'if not arguments' clause would run wmllint on the entire current directory - which could very well be something that you do not want!
Windows sys.argv again: sys.exit(1) when too complicated, and deliver a looooooong stderr message

I noted last time that my "fix" could not cover all possibilities. After further thought, I decided that the best thing to do in the hard cases is to sys.exit, and give users a clear explanation in stderr so they can re-enter their paths correctly. I may have gotten carried away, but given that many users nowadays are unfamiliar with the command line (even moreso on Windows), I wanted to give them plenty of hand-holding.

I looked up this issue, and it turns out to be a Windows shell problem after all, not Python, which surprised me.