Привет, Dr_Andrew! Очень рад видеть здесь русскоязычных пользователей JUCE!
The problem that you are seeing is actually expected behaviour if you look at the C++ standard. Unfortunately, C++ doesn't really do unicode, so that is the underlying problem here. As a consequence, there is no language-agnostic unicode lowercase conversion in C++, either.
The method String::toLowerCase(), that you are calling here, calls CharacterFunctions::toLowerCase() under the hood, which is implemented by calling std::towlower (defined in header <cwctype>).
std::towlower is defined as follows in the C++ standard:
"towlower (ch) returns the lowercase version of ch, or unmodified ch if no lowercase version is listed in the current C locale."
So you see, you can only convert those characters to lowercase that are in the current C locale that your app has set. It is impossible to convert any character to lowercase that corresponds to an uppercase in any language supported by Unicode. For that, you'd need to use a proper 3rdparty unicode library, which we don't do in JUCE at the moment as they are big, complicated, and slow things down a lot.
As a workaround, you can manually set the C locale to Russian in your app. After this, the conversion will start working.
On OSX or Linux, you can get the available locales by typing 'locale -a' on the Terminal. For example, on my MacBook it lists a locale "ru_RU.UTF-8". (On Windows there is another way to get the names of the available locales I guess.)
Now, if I take your code and just add this:
std::setlocale (LC_ALL, "ru_RU.UTF-8");
then your code works as you intend.
I know it's an ugly workaround, but please believe me it is an incredibly complex problem to implement it properly...
Hope this helps.
P.S. I should add that std::setlocale is not always safe to call from an app and can have nasty side effects because the locale setting always affects the whole process you run. For example, if you do that in an audio-plugin, you can mess up the host (or even crash it -- seen it happening!) because it's running in the same process.