bpo-34485: Emit C locale coercion warning later (GH-9002)

PYTHONCOERCELOCALE=warn warning is now emitted later and written into
sys.stderr, rather than being written into the C stderr stream.
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 6d97f2f..ad55b2c 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -301,10 +301,8 @@
 static void
 _emit_stderr_warning_for_legacy_locale(const _PyCoreConfig *core_config)
 {
-    if (core_config->coerce_c_locale_warn) {
-        if (_Py_LegacyLocaleDetected()) {
-            fprintf(stderr, "%s", _C_LOCALE_WARNING);
-        }
+    if (core_config->coerce_c_locale_warn && _Py_LegacyLocaleDetected()) {
+        PySys_FormatStderr("%s", _C_LOCALE_WARNING);
     }
 }
 
@@ -567,10 +565,6 @@
      */
     _PyRuntime.finalizing = NULL;
 
-#ifndef MS_WINDOWS
-    _emit_stderr_warning_for_legacy_locale(core_config);
-#endif
-
     err = _Py_HashRandomization_Init(core_config);
     if (_Py_INIT_FAILED(err)) {
         return err;
@@ -867,6 +861,11 @@
             return err;
         }
     }
+
+#ifndef MS_WINDOWS
+    _emit_stderr_warning_for_legacy_locale(core_config);
+#endif
+
     return _Py_INIT_OK();
 }