On non-us keyboards you can obtain lower case characters even pressing the SHIFT. For example here in Italy, where US persons have the '[' key, if you press the shift instead of obtaining the '{' you obtain the 'é', the same for the ';' key that shifted instead of giving the ':' gives 'ç', both lower case letters, so the
if ((fShift && psz->isLower()) || (!fShift && psz->isUpper())) {
test (around line 229 of askpassphrasedialog.cpp) gives the "wrong" result. (the problem of the test is that it thinks that without CAPS LOCK a shift+something should be uppercase if it's a letter)
A better idea would be to do something like:
if ((fShift && *psz >= 'a' && *psz <= 'z') || (!fShift && *psz >= 'A' && *psz <= 'Z')) {
this will probably break with the turkish i-without-dot (http://en.wikipedia.org/wiki/Dotted_and_dotless_I), but at least the 26 standard letters will be catched