2. Some existing database clusters which had been installed with the name "Turkish_Turkey.1254" became unstartable when the OS upgrade renamed that locale to "Turkish_Türkiye.1254". I'm trying to provide a pathway[2] to fix such systems in core PostgreSQL in the next minor release. Everyone affected probably already found another way but at least next time a country is renamed this might help with the next point too.
I was also hit by that OS update.
There is a Microsoft tool for creating a locale installer
Using that tool and adding a second locale Turkish_Turkey.1254 (name before Microsoft update) in the OS can fix your broken PostgreSQL.
I believe most people simply choose this path.
There are also several blogs/articles written in Turkish about the problem.
3. I'd also like to teach initdb to use BCP47 names like "tr-TR" instead of those names by default (ie if you don't specify a locale name explicitly), and have proposed that before[3] but it hasn't gone in due to lack of testing/reviews from Windows users. It seems like that doesn't matter much in practice to all the people using the popular EDB installer, since it apparently takes control of picking the locale and explicitly passes it in (and screws up the encoding as we have now learned).
If I am not mistaken BCP47 names are already used in Linux systems.
Using them would make PostgreSQL use the same locale names across Linux and Windows systems.
I can help with the testing part. Let me know the details, please.