static CultureInfoCache()
        {
            ValidCultureNames = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

#if !FEATURE_CULTUREINFO_GETCULTURES
            if (!AssemblyUtilities.CultureInfoHasGetCultures())
            {
                ValidCultureNames = HardcodedCultureNames;
                return;
            }
#endif

            foreach (CultureInfo cultureName in AssemblyUtilities.GetAllCultures())
            {
                ValidCultureNames.Add(cultureName.Name);
            }

            // https://docs.microsoft.com/en-gb/windows/desktop/Intl/using-pseudo-locales-for-localization-testing
            // These pseudo-locales are available in versions of Windows from Vista and later.
            // However, from Windows 10, version 1803, they are not returned when enumerating the
            // installed cultures, even if the registry keys are set. Therefore, add them to the list manually.
            var pseudoLocales = new[] { "qps-ploc", "qps-ploca", "qps-plocm", "qps-Latn-x-sh" };

            foreach (string pseudoLocale in pseudoLocales)
            {
                ValidCultureNames.Add(pseudoLocale);
            }
        }
        static CultureInfoCache()
        {
            ValidCultureNames = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

#if !FEATURE_CULTUREINFO_GETCULTURES
            if (!AssemblyUtilities.CultureInfoHasGetCultures())
            {
                ValidCultureNames = HardcodedCultureNames;
                return;
            }
#endif

            foreach (var cultureName in AssemblyUtilities.GetAllCultures())
            {
                ValidCultureNames.Add(cultureName.Name);
            }
        }